﻿Imports System.Windows.Forms
Imports Logica

Public Class AgregarPuestoUsuario
    Private m_puestos As List(Of Hashtable)

    Private Sub AgregarPuestoUsuario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        lblRetroalimentacion.Text = ""


        Dim departamentos As List(Of Hashtable)
        Dim opciones As New List(Of MiComboBox)

        departamentos = Gestor.departamentosTodos()
        opciones.Add(New MiComboBox("Seleccione", 0))

        For Each departamento As Hashtable In departamentos
            opciones.Add(New MiComboBox(departamento("nombre"), departamento("codigo")))
        Next

        cmbDepartamento.DisplayMember = "descripcion"
        cmbDepartamento.ValueMember = "valor"
        cmbDepartamento.DataSource = opciones
    End Sub

    ''' <summary>
    ''' Constructor Sobrecargado.
    ''' </summary>
    ''' <param name="p_codigoEmpleado">Codigo.</param>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 21/06/2010</remarks>
    Public Sub New(ByVal p_codigoEmpleado As String)

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        txtCodigoEmpleado.Text = p_codigoEmpleado
        txtCodigoEmpleado.ReadOnly = True

    End Sub

    ''' <summary>
    ''' Accion del cambio en el indice del combo box.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 21/06/2010</remarks>
    Private Sub cmbDepartamento_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbDepartamento.SelectedIndexChanged
        If cmbDepartamento.SelectedValue <> 0 Then
            Dim opciones As New List(Of MiComboBox)

            m_puestos = Gestor.listarPuestosPorDepartamento(cmbDepartamento.SelectedValue)
            opciones.Add(New MiComboBox("Seleccione", 0))

            For Each puesto As Hashtable In m_puestos
                opciones.Add(New MiComboBox(puesto("nombre"), puesto("codigo")))
            Next

            cmbPuesto.Enabled = True
            cmbPuesto.DisplayMember = "descripcion"
            cmbPuesto.ValueMember = "valor"
            cmbPuesto.DataSource = opciones
        Else
            cmbPuesto.DataSource = Nothing
            cmbPuesto.Enabled = False
        End If
    End Sub

    ''' <summary>
    ''' Accion del cambio en el indice del combo box.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 21/06/2010</remarks>
    Private Sub cmbPuesto_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPuesto.SelectedIndexChanged
        If Not cmbPuesto.SelectedIndex = 0 Then
            lblRetroalimentacion.Text = ""
        End If
    End Sub


    ''' <summary>
    ''' Accion del boton de Ok. Valida los campos a registrar.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 21/06/2010, Modificado: 20/07/2010</remarks>
    Private Sub OK_Button_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
        Dim usuario As Hashtable

        usuario = Gestor.usuarioBuscar(txtCodigoEmpleado.Text)



        If Not cmbPuesto.SelectedIndex = 0 And Not cmbDepartamento.SelectedIndex = 0 Then
            If usuario("rol") = 3 Then
                If cmbPuesto.SelectedValue = 1 Then
                    lblRetroalimentacion.ForeColor = Color.Red
                    lblRetroalimentacion.Text = "Un empleado común no puede ser gerente general."
                    Exit Sub
                ElseIf cmbPuesto.SelectedValue = 2 Then
                    lblRetroalimentacion.ForeColor = Color.Red
                    lblRetroalimentacion.Text = "Un empleado común no puede ser de recursos humanos."
                    Exit Sub
                Else
                    Try
                        Gestor.actualizarHistorialEmpleado(usuario("identificacion"), usuario("codigo_puesto"))
                        Gestor.modificarPuestoAEmpleado(txtCodigoEmpleado.Text, cmbPuesto.SelectedValue)
                    Catch sqlEx As SqlClient.SqlException
                        lblRetroalimentacion.ForeColor = Color.Red
                        lblRetroalimentacion.Text = "Error de conexión."
                        Exit Sub
                    Catch ex As Exception
                        MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End Try
                End If
            End If
            
        Else
            lblRetroalimentacion.ForeColor = Color.Red
            lblRetroalimentacion.Text = "Seleccione un puesto."
            Exit Sub
        End If
        Me.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.Close()
    End Sub

    ''' <summary>
    ''' Retorna a la pantalla anterior.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 28/06/2010 Modificado: 28/06/2010</remarks>
    Private Sub Cancel_Button_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    ''' <summary>
    ''' Accion de link de ayuda.
    ''' </summary>
    ''' <remarks>Creado Por: Roberto Fiatt, Fecha: 21/06/2010</remarks>
    Private Sub lnkAyuda_LinkClicked_1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lnkAyuda.LinkClicked
        Dim ayuda As New MostrarAyuda
        Dim ubicacion As New Point(250, 100)

        ayuda.Visible = True
        ayuda.Location = ubicacion
    End Sub
End Class
